package com.wyg.blog.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wyg.blog.model.blog.Blog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface BlogMapper {
    IPage<Blog> getSomeBlogs(Page<?> page, String username);

    IPage<Blog> getBlogByLike(Page<?> page, @Param("username") String username, @Param("blog") String blog);

    List<Blog> getLatestBlog();

    Integer getBlogCount(Integer type_id);

    Integer getAllBlogsCount();

    IPage<Blog> getPublishedBlog(Page<?> page, @Param("published") boolean published, @Param("username") String username);

    IPage<Blog> getAllBlogs(Page<?> page);

    Blog getBlogById(Integer id);

    IPage<Blog> getBlogByTypeId(Page<?> page, Integer type_id);

    IPage<Blog> getBlogByTagId(Page<?> page, Integer tag_id);

    String getTitleById(Integer id);

    boolean addBlog(Blog blog);

    boolean updateBlog(@Param("id") Integer id, @Param("title") String title, @Param("type_id") Integer type_id,
                       @Param("description") String description, @Param("content") String content);

    boolean updateViews(Integer id);

    boolean updateLikes(Integer id);

    boolean publishBlog(Integer id);

    boolean lockBlog(Integer id);

    boolean deleteBlog(Integer id);

    String getContentById(Integer id);

    boolean addContent(@Param("id") Integer id, @Param("content") String content);

    boolean updateContent(@Param("id") Integer id, @Param("content") String content);

    IPage<Map<String, String>> getBlogInfo(Page<?> page);

}
